package com.jctrip.hotel.source.model.hmein.req;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.SuperBuilder;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Author henry
 * @Date 2023/4/16 23:41
 * @Description
 */
@Data
@SuperBuilder
public class CreateOrderReq extends BaseReq {
    // 服务标识
    @JsonProperty("ServiceFlag")
    private String ServiceFlag;
    // 酒店id
    @JsonProperty("HotelCd")
    private String HotelCd;
    // 价格码
    @JsonProperty("RateCode")
    private String RateCode;
    // 预定来源
    @JsonProperty("ResvType")
    private String ResvType;
    //到店日期
    @JsonProperty("ArrDate")
    private Date ArrDate;
    //离店日期
    @JsonProperty("DepDate")
    private Date DepDate;
    // 联系人姓名
    @JsonProperty("GustName")
    private String GustName;
    //联系人电话
    @JsonProperty("MobileTel")
    private String MobileTel;
    // 房型编号
    @JsonProperty("CRSRmType")
    private String CRSRmType;
    // 房间数量
    @JsonProperty("RmNum")
    private int RmNum;
    // 入住人数，成人
    @JsonProperty("GuestNum")
    private int GuestNum;
    // 支付类型
    @JsonProperty("PayCd")
    private String PayCd;
    // 会员类型
    @JsonProperty("MemberType")
    private String MemberType;
    //会员号
    @JsonProperty("MemberNo")
    private String MemberNo;
    // 公司托管协议号
    @JsonProperty("TrustMemberNo")
    private String TrustMemberNo;
    // 协议公司标识
    @JsonProperty("LicenseFlag")
    private String LicenseFlag;
    // 最早到店时间 HH:mm
    @JsonProperty("EarliestTime")
    private String EarliestTime;
    // 最晚离店时间
    @JsonProperty("LastTime")
    private String LastTime;
    // 入住信息
    @JsonProperty("GustInfos")
    private List<GustInfo> GustInfos;
    // 每日房间
    @JsonProperty("DailyRates")
    private List<DailyRate> DailyRates;
    //第三方订单信息
    @JsonProperty("OutOrders")
    private List<OutOrder> OutOrders;
    // 订单总金额
    @JsonProperty("MustPayMoney")
    private BigDecimal MustPayMoney;
    // 订单总金额
    @JsonProperty("MarkupPayMoney")
    private BigDecimal MarkupPayMoney;
    //订单备注
    @JsonProperty("Note1")
    private String Note1;
    // 早餐数量 ,协议大客戶填写
    @JsonProperty("Count")
    private String Count;

    @Data
    @Builder
    public static class GustInfo {
        // 入住类型
        @JsonProperty("GustType")
        private String GustType;
        // 会员类型
        @JsonProperty("MemberType")
        private String MemberType;
        // 会员号
        @JsonProperty("MemberNo")
        private String MemberNo;
        // 性别
        @JsonProperty("Sex")
        private String Sex;
        // 姓名
        @JsonProperty("GustNm")
        private String GustNm;
        // 手机号
        @JsonProperty("Phone")
        private String Phone;
        // 最早到店时间 HH:mm
        @JsonProperty("EarliestTime")
        private String EarliestTime;
        // 最晚到店时间
        @JsonProperty("LastTime")
        private String LastTime;
    }

    @Data
    public static class DailyRate {
        // 日期
        @JsonProperty("Date")
        private String Date;
        // 价格
        @JsonProperty("Rate")
        private BigDecimal Rate;
        // 低价
        @JsonProperty("MarkupRate")
        private BigDecimal MarkupRate;
        // 券类型
        @JsonProperty("CouponType")
        private String CouponType;
    }

    @Data
    @Builder
    public static class OutOrder {
        // 外部订单编号
        @JsonProperty("OutOrderNo")
        private String OutOrderNo;
    }
}
